//============================================================================================
/**
 * @file	intro_sys.h
 * @brief	イントロ画面用OBJ用ヘッダ
 * @author	Akito Mori
 * @date	2007.01.22
 */
//============================================================================================

#ifndef	__INTRO_SYS_H__
#define	__INTRO_SYS_H__

#include "savedata/savedata_def.h"

#include "gflib/touchpanel.h"
#include "system/lib_pack.h"
#include "system/bmp_list.h"
#include "system/bmp_menu.h"
#include "system/fontproc.h"
#include "system/clact_tool.h"
#include "system/wordset.h"
#include "system/touch_subwindow.h"
#include "savedata/misc.h"
#include "savedata/config.h"
#include "application/namein.h"

#include "large_yesno.h"

enum{
	INTRO_OBJ_DOCTOR=0,		// 博士
	INTRO_OBJ_HERO_S,		// 下画面・男主人公
	INTRO_OBJ_HEROINE_S,	// 下画面・女主人公
	INTRO_OBJ_BTN_TOUCH_S,	// 下画面・タッチボタン
	INTRO_OBJ_YESNO_CUR_S,	// 下画面・はい／いいえ カーソル
	INTRO_OBJ_MARIRU,		// マリル

	INTRO_OBJ_BALL,		// モンスターボール
	INTRO_OBJ_POKEMON,		// ポケモン
	INTRO_OBJ_HERO_M,		// 上画面主人公

	INTRO_OBJ_CURSOR,		// カーソル
	INTRO_OBJ_MAX,
};



///	カーソル制御ワーク
typedef struct{
	u8 start;	 // 初期位置
	u8 max;		 // 上限
	u8 on;		 // 表示しているか
	u8 pos;		 // 現在位置

	u8 wait;	 // アニメ用ウェイトワーク
	u8 wait_max; // 点滅時のウェイトMAX
	u8 endwait;	 // 終了時のウェイト
	u8 blink;

	int pal_fade_seq; // パレットフェード用シーケンサ
}INTRO_CURSOR_WORK;


///	タイトル全体制御用ワーク構造体
typedef struct INTRO_DEMO_WORK_tag
{
	int					heapID;
	SAVEDATA*			sv;			//セーブデータポインタ
	CONFIG*				config;		//コンフィグポインタ

	int					subseq;
	int					subnextseq;
	PROC*				subproc;

	//ＢＧシステム関連
	GF_BGL_INI*			bgl;
	GF_BGL_BMPWIN		msgwin;
	GF_BGL_BMPWIN		win_msg_print;
	GF_BGL_BMPWIN		button_msg[3];
	GF_BGL_BMPWIN		msg_touch_button;
	int					button_num;

	//ＢＭＰリストシステム関連
	int					listseq;
	GF_BGL_BMPWIN		listwin;
	GF_BGL_BMPWIN		cullumwin[3];	// 最大３項目
	BMPLIST_WORK*		list;
	BMP_MENULIST_DATA*	listdata;
	int					listres;

	// セルアクター関連
	CATS_SYS_PTR	csp;
	CATS_RES_PTR	crp;
	CLACT_WORK_PTR	awp[INTRO_OBJ_MAX];
//	CATS_ACT_PTR	cap[INTRO_OBJ_MAX];


	//メッセージマネージャ関連
	MSGDATA_MANAGER*	msgman;
	int					msgseq;
	int					guideseq;
	int					msgID;
	STRBUF*				msgstr;
	void*				msgicon;
	WORDSET*			wordset;

	//名前入力サブＰＲＯＣ関連
	TCB_PTR				namein_task;
	NAMEIN_PARAM*		myname;
	NAMEIN_PARAM*		rivalname;

	//半透明フェード関数
	int					alphafadeseq;
	int					alphaev1;
	int					alphaev2;

	//内部処理性別分岐用
	u16					mysex;
	//性別選択：背景パレット保持
	u16					select_pal;

	//主人公ＢＧアニメ用
	u8					bganime_count_male;
	u8					bganime_count_wait_male;
	u8					bganime_count_female;
	u8					bganime_count_wait_female;

	//ウエイトカウンター
	int					wait;
	//汎用ワーク
	int					work[8];

	// カーソルワーク
	INTRO_CURSOR_WORK	cursor;
	int					kt_st;

	// 博士がしゃべるメッセージ
	u32					opening_msg;

	// 背景スクロール用ワーク
	u16					bgmove_seq;
	s16					bgmove_x;

	LARGE_YESNO_PTR		p_yesno;
	int					gender_work;		// 選んだ性別を保存

}INTRO_DEMO_WORK;



// ===========================================================
// intro_obj.c
// ===========================================================
extern void Intro_CellActSet( INTRO_DEMO_WORK * wk );
extern void Intro_CellActRerease( INTRO_DEMO_WORK * wk );
extern void Intro_CellActInit( INTRO_DEMO_WORK * wk );


extern void intro_obj_test( INTRO_DEMO_WORK *wk );
extern void Intro_HeroHeroineVisible( INTRO_DEMO_WORK *wk, int on_off );


#define BOTH_ON		( 2 )
#define BOTH_OFF	( 3 )


#endif